Skip to content

Fix change address#7

Open
baender wants to merge 2 commits intoduff2013:masterfrom
baender:fix_change_address
Open

Fix change address#7
baender wants to merge 2 commits intoduff2013:masterfrom
baender:fix_change_address

Conversation

@baender
Copy link

@baender baender commented Nov 13, 2019

Hi again,

this pull request includes the other fix with the Serial. So I think you could either merge the other one first and than this one, or only this one and close the other one. Only if you are satisfied with the result of course.

Issue
Function changeAddress() always returns -4 and never sends anyting via the data line.

Problem
ioActive() is tested and set in the very beginning of the function. A subsequent call of isActive() does the very same thing and since ioActive has been set already, isActive() will here always return -4 as error.

int SDI12::changeAddress( const uint8_t new_address ) {
    if ( ioActive ) return -5;
    else ioActive = true;

    ...

    error = isActive( );

    if ( error ) {
        ioActive = false;
        return -4;
    }
}

Solution
Since changeAddress() is the only function calling isActive() the easiest solution would be to delete the call of isActive() entirely.

- Status register of Serial3 (UART2_S1) was hard coded regardless of Serial port used

- Added pointer to status register which is initialised depending on Serial port used

- Now, SDI-12 runs on serial ports 1, 2 and 3
- Removed isActive() request
- changeAddress() sets ioActive, then, isActive() tests again ioActive and returns an error
- changeAddress() is only function using isActive()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants